import matplotlib.pyplot as plt
import matplotlib.patches as patches


def draw_two_lane_one_way_road():
    # 画布大小（单位：英寸），可以根据需要调整
    fig = plt.figure(figsize=(8, 4))
    # 将坐标轴铺满整个画布区域，不留边距
    ax = fig.add_axes([0, 0, 1, 1])

    # 道路参数
    road_length = 10  # 道路长度
    road_width = 2  # 双车道总宽度（假设每车道宽度各为 1）

    # 画道路（灰色矩形）
    road_rect = patches.Rectangle(
        (0, 0),  # 左下角坐标
        road_length,  # 矩形长度（x 方向）
        road_width,  # 矩形宽度（y 方向）
        facecolor='gray',
        edgecolor='black'
    )
    ax.add_patch(road_rect)

    # 车道分隔线（在 y=1 处，白色虚线）
    lane_separator_y = 1
    ax.plot(
        [0, road_length],
        [lane_separator_y, lane_separator_y],
        color='white',
        linestyle='--',
        linewidth=2
    )

    # 在下车道中间位置画一个小箭头表示单向行驶
    # 如果想放在上车道，可以把 y=0.5 改为 y=1.5
    arrow_start_x = road_length * 0.15  # 箭头起点（x 方向），这里选在 40% 处
    arrow_start_y = 0.5  # 箭头起点（y 方向），底车道的中间
    ax.arrow(
        arrow_start_x,  # 箭头起点 X
        arrow_start_y,  # 箭头起点 Y
        0.5,  # 箭头在 X 方向的长度
        0,  # 箭头在 Y 方向的偏移（0 表示水平箭头）
        width=0.02,  # 箭体宽度（可调整）
        head_width=0.1,  # 箭头头部宽度
        head_length=0.15,  # 箭头头部长度
        fc='white',  # 填充颜色
        ec='white'  # 边框颜色
    )
    ax.arrow(
        arrow_start_x,  # 箭头起点 X
        arrow_start_y + 1,  # 箭头起点 Y
        0.5,  # 箭头在 X 方向的长度
        0,  # 箭头在 Y 方向的偏移（0 表示水平箭头）
        width=0.02,  # 箭体宽度（可调整）
        head_width=0.1,  # 箭头头部宽度
        head_length=0.15,  # 箭头头部长度
        fc='white',  # 填充颜色
        ec='white'  # 边框颜色
    )


    # 设置坐标范围，让道路正好占满整个图
    ax.set_xlim(0, road_length)
    ax.set_ylim(0, road_width)

    # 让纵横比相同，去除坐标轴等多余信息
    ax.set_aspect('equal', adjustable='box')
    plt.axis('off')
    plt.savefig("../picture/test.jpg")
    # 显示图像
    # plt.show()


if __name__ == "__main__":
    draw_two_lane_one_way_road()